Baraj Timisoara, martie 1997
Ziua 1,	Problema 2
ProInfo (Manuela Mateescu)

Postul de televiziune ProInfo are posibilitatea sa-si infiinteze posturi locale
in n (1<=n<=200) localitati, ale caror coordonate, specificate relativ la un 
sistem de coordonate ortogonal cu centrul in coltul stanga jos al unei harti de 
dimensiuni LxH (1<=L,H<=30000), sunt cunoscute. Cum orice intentie trebuie 
realizata cu cheltuieli minime, trebuie calculata cu precizie mai buna decat 
0.01 puterea minima necesara pentru fiecare statie de emisie, astfel incat sa 
acopere intreaga zona arondata postului local corespunzator. Mai exact, zona 
arondata postului local Pi este formata din totalitatea punctelor din planul 
hartii care sunt mai apropiate de postul local Pi decat de orice alt post, iar 
puterea necesara statiei de emisie este direct proportionala cu suprafata zonei 
arondate postului, factorul de proportionalitate fiind egal cu 1 (unu) indiferent 
de conditiile de relief, clima, etc. 
Restrictii de intrare / iesire:
Din fisierul de intrare cu numele INPUT.TXT  se citesc:
* de pe prima linie un numar natural n, care reprezinta numarul de posturi;
* de pe urmatoarele n linii, cate o pereche de numere reale, care reprezinta 
coordonatele localitatilor in care se pot infiinta posturi locale (abscisa si 
ordonata, separate prin spatiu);
* de pe ultima linie numerele naturale  L si H,  care  reprezinta dimensiunile 
hartii.
In fisierul de iesire OUTPUT.TXT veti afisa in ordinea localitatilor din fisierul 
de intrare ariile celor n zone, fiecare pe cate o linie, cu 2 zecimale exacte.
Exemplu:
Pentru fisierul de intrare:
3
2 2
6 2
4 4
10 5
Fisierul de iesire va fi:
15.50
25.50
9.00

Timp de executie: maxim 15" / test.

NOTA: Problema trebuie citita de cel putin 3 ori pentru a putea fi inteleasa
                  corect  (macar o data ! )

===============================
Solutia 1 (Manuela Mateesscu)
{Determinam succesiv poligoanele Voronoi, prin intersectii de semiplane}

program Voronoi;
const NMaxPosturi = 250;
type  Post = 1 .. NMaxPosturi;
      Poligon = ^Varf; {lista simplu inlantuita circulara a varfurilor sale, in sens trigonometric}
      Varf = record
             a, o: real; {coordonatele carteziene ale varfului}
             urm: Poligon;
             {adresa urmatorului varf al poligonului in sens trigonometric}
             end;
var n, i, j: Post; p: Poligon;
    x, y: array [Post] of real; {coordonatele posturilor de televiziune}
    l, h: real; fout: text;
    nume:string;

procedure Citire;
var fin: text; i: Post; nume: string;
begin
write (' nume fisier? '); readln(nume);
assign (fin, nume); reset (fin);
readln (fin, n);
for i := 1 to n do readln (fin, x[i], y[i]);
readln (fin, l, h);
close (fin);
end;

function InitPoligon: Poligon;
var p: array [1 .. 4] of Poligon; i: byte;
    dx, dy: array[1 .. 4] of real;
begin
dx[1] := 0; dx[2] :=l; dx [3] := l; dx[4] := 0;
dy[1] := 0; dy[2] := 0; dy[3] := h; dy[4] := h;
for i := 1 to 4 do
    begin
    new(p[i]);
    p[i]^.a := dx[i]; p[i]^.o := dy[i];
    end;
for i := 1 to 3 do  p[i]^.urm := p[i + 1]; p[4]^.urm := p[1];
InitPoligon := p[1];
end;

function Latura (p, q: Poligon): real;
begin
Latura := sqrt (sqr (p^. a - q^. a) + sqr (p^.o - q^.o));
end;

function Arie (p: Poligon): real;
{calculeaza aria poligonului p, prin triangulizare}
var q: Poligon; aa, l1, l2, l3, sp: real;
begin
q := p^.urm; aa := 0;
while q^.urm <> p do
      begin
      l1 := Latura (p, q); l2 := Latura (p, q^.urm); l3 := Latura (q, q^.urm);
      sp := (l1 + l2 + l3) / 2; {semiperimetrul}
      aa := aa + sqrt ( sp * (sp - l1) * (sp - l2) * (sp - l3));
      {am adaugat aria triunghiului (p, q, q^.urm), calculata cu formula lui Heron}
      q := q^.urm;
      end;
Arie := aa;
end;

function AcelasiSemiplan (cx, cy, tl: real; i: Post; q: Poligon): boolean;
{intoarce true daca si numai daca postul i si varful q sunt de aceeasi parte
a dreptei cx * x + cy * y + tl = 0}
begin
AcelasiSemiplan := (cx * x[i] + cy * y[i] + tl) * (cx * q^.a + cy * q^.o + tl) > 0
end;

procedure Mediatoare (i, j: Post; var cx, cy, tl: real);
{calculeaza coeficientii ecuatiei mediatoarei segmentului [Pi, Pj]}
var xm, ym, m: real;
begin
xm := (x[i] + x[j]) / 2; ym := (y[i] + y[j]) / 2;
if x[i] = x[j] then
   begin cx := 0; cy := 1; tl := -ym end
   else
   if y[i] = y[j] then
      begin cx := 1; cy := 0; tl := -xm end
      else
      begin
      m := (x[j] - x[i]) / (y[i] - y[j]);  {panta mediatoarei}
      cx := m; cy := -1; tl := ym - m * xm;
      end;
end;

procedure IntS_M (cx, cy, tl: real; q: Poligon; var xi, yi: real; var nr: byte);
{mareste valoarea parametrului nr cu 1 daca si numai daca si numai daca
mediatoarea (cx, cy, tl) intersecteaza segmentul [q, q^.urm).
{xi, yi sunt coordonatele punctului de intersectie, daca acesta exista}
var d1, d2, d3, det, alfa: real;
    {d1, d2, d3 coeficientii dreptei determinate de varfurile q si q^.urm}
begin
d1 := q^.urm^.o - q^.o;
d2 := q^.a - q^.urm^.a;
d3 := q^.o * (q^.urm^.a - q^.a) - q^.a * (q^.urm^.o - q^.o);
det := cx * d2 - cy * d1;
if det <> 0 then
   begin
   xi := (-tl * d2 + d3 * cy) / det;
   yi := (-cx * d3 + d1 * tl) / det;
   if q^.a = q^.urm^.a then
      alfa := (yi - q^.o) / (q^.urm^.o - q^.o)
      else
      alfa := (xi - q^.a) / (q^.urm^.a - q^.a);
   if (alfa >= 0) and (alfa < 1) then inc (nr);
   end
end;

procedure Intersect (var p: Poligon; i, j: Post);
var xi, yi, xi1, xi2, yi1, yi2, cx, cy, tl: real;
    q1, q2, p1, p2, q: Poligon; nr: byte;
begin
{calculez coeficientii ecuatiei mediatoarei segmentului [Pi, Pj]}
Mediatoare (i, j, cx, cy, tl);
q := p; nr := 0;
repeat
      {determin intersectia segmentului determinat de varfurile [q, q^urm)
      cu mediatoarea segmentului (Pi, Pj)}
      IntS_M (cx, cy, tl, q, xi, yi, nr);
      if nr = 1 then
         begin   {primul punct de intersectie}
         q1 := q;
         xi1 := xi; yi1 := yi; nr := 2;
         end
         else
         if nr = 3 then  {al doilea punct de intersectie}
            begin
            q2 := q;
            xi2 := xi; yi2 := yi; nr := 4;
            end;
      q := q^.urm;
until q = p;
if nr = 4 then  {exista doua puncte de intersectie}
   begin
   { (xi1, yi1), respectiv (xi2, yi2) reprezinta coordonatele punctelor de
   intersectie, iar q1, respectiv q2 reprezinta prima extremitate a laturilor poligonului
   intersectate de mediatoare}
   if not AcelasiSemiplan (cx, cy, tl, i, q1^.urm) then
      begin
      {retin partea "din stanga"}
      new (p2); p2^.a := xi2; p2^.o := yi2; p2^.urm := q2^.urm;
      if (xi1 = q1^.a) and (yi1 = q1^.o) then
         p1 := q1
         else
         begin
         new (p1); p1^. a := xi1; p1^.o := yi1; q1^.urm := p1;
         end;
      p1^.urm := p2;
      end
      else
      begin
      {retin partea "din dreapta"}
      new (p1); p1^.a := xi1; p1^.o := yi1; p1^. urm:= q1 ^. urm;
      if (xi2 = q2^.a) and (yi2 = q2^.o) then
         p2 := q2
         else
         begin
         new (p2); p2^.a := xi2; p2^.o := yi2; q2^.urm := p2;
         end;
      p2^.urm := p1;
      end;
   p := p1;
   end
end;

begin {program principal}
citire;
write('fisier iesire : ');
readln(nume);
assign (fout,nume); rewrite (fout);
for i := 1 to n do
    begin
    {construiesc poligonul Voronoi corespunzator postului Pi}
    p := InitPoligon;
    for j := 1 to n do
        if i <> j then
           {determin punctele de intersectie ale poligonului cu mediatoarea segmentului (Pi, Pj)
           retin intersectia poligonului cu semiplanul S(i, j)}
           Intersect (p, i, j);
    writeln (fout, Arie (p): 10:2);
    end;
close (fout);
end.
-----------------------------------
Solutia 2 (Adrian Carcu)
{$N+,E-,G+,Q-,R-,S-}
program proinfo_poligoane_Voronoi;
{uses graph,crt;}
{uses timp;}
const mag=33;
var fis:text;
    x,y:array[1..200] of double;
    px,py,ppx,ppy:array[1..200] of double;
    gd,gm,i,j,n,l,h,np:integer;
    arie:double;

function sign(n:double):integer;
begin
   if n>0 then sign:=1
   else if n=0 then sign:=0
   else sign:=-1;
end;

function interswhere(x1,y1,x2,y2,a2,b2,c2:double; var x,y:double):boolean;
var a1,b1,c1,t:double;
begin
   a1:=y1-y2; b1:=-(x1-x2); c1:=x1*y2-x2*y1;
   interswhere:=true; t:=a1*b2-a2*b1;
   if t=0 then interswhere:=true
   else begin
           x:=(b1*c2-b2*c1)/t;
           y:=-(a1*c2-a2*c1)/t;
        end;
end;

function intersegm(x1,y1,x2,y2,a,b,c:double):boolean;
begin
   if sign(a*x1+b*y1+c)*sign(a*x2+b*y2+c)<=0  then intersegm:=true else intersegm:=false;
end;

function parte(x,y,a,b,c:double):integer;
begin
   parte:=sign(a*x+b*y+c);
end;

{procedure linie(x1,y1,x2,y2:double);
begin
   x1:=10+x1*mag; x2:=10+x2*mag;
   y1:=400-y1*mag; y2:=400-y2*mag;
   line(trunc(x1),trunc(y1),trunc(x2),trunc(y2));
end;

procedure desen;
var i:integer;
begin
   cleardevice;
   for i:=1 to n do circle(trunc(10+x[i]*mag),trunc(400-y[i]*mag),2);
   for i:=1 to np-1 do linie(px[i],py[i],px[i+1],py[i+1]);
end;}

procedure interspolig(a,b,c:double;v:integer);
var i,n,vv:integer;
begin
   n:=0;
   for i:=1 to np-1 do begin
      vv:=parte(px[i],py[i],a,b,c);
      if (vv=v) then begin
         inc(n); ppx[n]:=px[i]; ppy[n]:=py[i];
         end;
      if intersegm(px[i],py[i],px[i+1],py[i+1],a,b,c) then begin
         inc(n); interswhere(px[i],py[i],px[i+1],py[i+1],a,b,c,ppx[n],ppy[n]);
         if n>1 then if (ppx[n-1]=ppx[n]) and (ppy[n-1]=ppy[n]) then dec(n);
         end;
      end;
   np:=n+1;
   for i:=1 to n do begin
      px[i]:=ppx[i]; py[i]:=ppy[i];
      end;
   px[np]:=px[1]; py[np]:=py[1];
end;

procedure mediatoare(x1,y1,x2,y2:double; var a,b,c:double);
var xm,ym,m:double;
begin
   xm:=(x1+x2)/2; ym:=(y1+y2)/2;
   if y1<>y2 then begin
      m:=-(x1-x2)/(y1-y2);
      a:=m; b:=-1; c:=ym-m*xm;
      end
      else begin
              a:=-1; b:=0; c:=xm;
           end;
end;

procedure poligon(v:integer);
var i:integer;
    a,b,c:double;
begin
   np:=5;
   px[1]:=0; px[2]:=l; px[3]:=l; px[4]:=0; px[5]:=0;
   py[1]:=0; py[2]:=0; py[3]:=h; py[4]:=h; py[5]:=0;
   for i:=1 to n do if i<>v then begin
      mediatoare(x[v],y[v],x[i],y[i],a,b,c);
      {desen;
      setcolor(14);
      if b<>0 then linie(0,-c/b,l,(-c-a*l)/b)
              else linie(c,0,c,h);
      setcolor(15);
      readkey;}
      interspolig(a,b,c,parte(x[v],y[v],a,b,c));
      end;
   {desen;
   readkey;}
end;

begin
   {timp1;}
   {gd:=vga; gm:=vgahi; initgraph(gd,gm,'c:\bp\bgi');}
   assign(fis,'proinfo.dat'); reset(fis);
   readln(fis,n);
   for i:=1 to n do readln(fis,x[i],y[i]);
   readln(fis,l,h);
   close(fis);
   for i:=1 to n do begin
      poligon(i);
      {desen;}
      arie:=0;
      for j:=1 to np-1 do arie:=arie+px[j]*py[j+1]-px[j+1]*py[j];
      writeln(abs(arie/2):0:2);
      end;
   {closegraph;}
   {timp2;
   afistimp;}
end.
==================================
	TESTE INP
test 1:
2
3.00     20.86
67.27     16.32
100 100
------------------------
test 2:
3
2 2
4 4
1 3
10 5
------------------
test 3:
4
2 2
8 2
8 8
2 8
10 10
-------------------
test 4:
5
    941.00   6077.86
  20149.27   4853.32
  12770.37  14243.08
  25225.07   8798.06
  11037.92   9837.77
30000 30000
------------------------------
test 5:
20
     31.00     20.86
    671.27     16.32
    425.37     47.08
    840.07     29.06
    367.92     32.77
    844.70     30.72
    329.16     24.47
    279.83     14.48
    287.87     97.77
    887.49      2.83
    143.14      2.50
      9.59     65.77
    708.77     20.56
    592.68     64.96
    244.00     29.68
    772.09     88.50
    573.51     68.95
      7.34     98.71
    749.77     14.20
    784.91     86.59
1000 100
---------------------------
test 6:
50
    313.00    202.86
   6716.27    161.32
   4256.37    474.08
   8408.07    293.06
   3679.92    327.77
   8441.70    306.72
   3294.16    246.47
   2790.83    149.48
   2872.87    976.77
   8879.49     20.83
   1435.14     21.50
     96.59    650.77
   7081.77    206.56
   5928.68    644.96
   2438.00    295.68
   7723.09    881.50
   5733.51    684.95
     76.34    988.71
   7495.77    143.20
   7841.91    864.59
   2878.69    628.09
   8771.28    273.16
   9607.54    157.17
   1774.27    498.58
   1559.29    739.61
    803.75     59.08
   7955.11    381.81
   4368.61    493.74
   8188.34    141.82
    671.09    193.06
   2274.67    254.57
   8370.37    314.31
   6922.66    318.90
   2964.48    740.77
   7235.55    542.41
   8805.60    112.67
   4036.47     53.11
   6734.55    921.08
   6814.84    277.93
   7344.70    663.50
   2300.16    364.95
   9869.13     54.31
   8666.10    697.55
   6688.10    309.02
   5352.90    442.33
   3471.90    487.35
   8508.07    180.76
   4935.92    892.13
   2075.40    587.81
   6232.11    540.93
10000 1000
----------------------------
test 7:
200
    313.00   4051.86
   6716.27   3235.32
   4256.37   9495.08
   8408.07   5865.06
   3679.92   6558.77
   8441.70   6132.72
   3294.16   4933.47
   2790.83   2983.48
   2872.87  19529.77
   8879.49    405.83
   1435.14    433.50
     96.59  13013.77
   7081.77   4120.56
   5928.68  12881.96
   2438.00   5913.68
   7723.09  17633.50
   5733.51  13696.95
     76.34  19778.71
   7495.77   2872.20
   7841.91  17294.59
   2878.69  12578.09
   8771.28   5463.16
   9607.54   3141.17
   1774.27   9963.58
   1559.29  14793.61
    803.75   1195.08
   7955.11   7632.81
   4368.61   9878.74
   8188.34   2827.82
    671.09   3878.06
   2274.67   5089.57
   8370.37   6297.31
   6922.66   6372.90
   2964.48  14810.77
   7235.55  10841.41
   8805.60   2247.67
   4036.47   1077.11
   6734.55  18434.08
   6814.84   5545.93
   7344.70  13275.50
   2300.16   7298.95
   9869.13   1089.31
   8666.10  13943.55
   6688.10   6196.02
   5352.90   8848.33
   3471.90   9756.35
   8508.07   3607.76
   4935.92  17847.13
   2075.40  11748.81
   6232.11  10811.93
   4483.33   3693.23
   9960.69  13832.63
    972.54   2974.75
   8803.23   8776.71
   1544.98   3687.04
   3788.01   7276.39
   4538.08   9211.50
   8175.68   5067.57
   5826.37  12159.87
   6969.26  17574.56
   3639.36  15600.62
   2053.46  16744.70
   9018.75  15510.19
   2954.27   9138.70
   1884.96   4490.01
   3228.90  15262.86
   2743.97  16722.40
   2469.02  10153.05
      3.42  14185.15
   3953.31   5219.55
   2929.15  14112.08
   7892.33  11321.66
    217.90  17699.26
    323.68   3111.16
   4188.41     75.14
   7622.53   4615.57
    619.86   1501.49
   6641.37  16074.21
   4186.52  19841.04
    464.16   2026.06
   9544.80   4267.12
   9801.76    643.50
   8022.59  10222.92
   9995.66  14316.77
   9948.89  15630.73
   3660.02   1494.32
   2601.78  18360.86
   8943.05   9766.92
   3780.69  14932.42
   3410.70  10199.63
   1010.97    482.99
   3561.62  12926.51
   6359.81   9969.95
   9960.49   3976.24
   6893.44    643.76
   8003.61   3366.46
    747.63  15747.96
   4303.87   4434.01
   8825.58   9484.06
   8699.93  14426.86
   2126.98  13227.15
   1897.83  16331.02
   4689.56   2976.44
   8728.80  11965.10
   2171.80   8077.47
   7038.50   6314.78
   6047.04   1173.29
   2196.47  13112.08
   3429.86   9423.31
   7234.92   1680.41
   2520.81   6959.04
   8607.88   5014.44
   3687.42   8598.65
   7581.64   9117.81
   6159.54   4803.31
   7243.41   3589.66
    354.96  17892.32
   5139.47  13460.88
   5824.41  19503.14
   1535.47  12275.31
   4833.82   9301.14
   3305.14  16435.66
   1555.86  14942.18
   3440.28    778.25
   6896.90  13280.08
   6188.01  15417.58
   8947.19  12832.81
   7814.49   3825.75
   9057.38  17488.53
   2987.73   2172.59
   3530.34  11470.42
   6790.91  19911.74
    952.36   5544.40
   2361.92   1612.39
   5138.53   4483.54
   4151.20  10051.97
   3710.58  15774.38
   6811.91  10544.57
   2289.93  19581.02
   9705.50  16531.21
   4328.10  19957.06
   7047.38  16417.87
   6555.39  17305.28
   3661.18   1655.41
     50.97   2085.19
   6368.06  16079.27
   6942.12   9779.41
   1002.52   6496.94
   2737.95  17102.79
   5038.42  14518.29
   4262.33  19460.43
   5863.36   9648.71
   3244.18   9662.42
   4656.36   3619.06
   5507.00  17883.46
   5904.82   5975.42
   5795.84  12874.28
   2535.88    911.62
   8226.47   4421.87
   6684.98   5358.70
   2361.91   7057.48
   6076.81   8318.02
   4903.23   5024.51
   6040.55  11450.34
   7028.76  18483.16
   7144.44  10908.56
   7325.52  10975.89
   8457.60    422.43
    379.94  18134.73
   6439.26  15642.93
    962.06  17642.36
   9447.20  19716.59
   3865.79    448.03
   7877.61  10129.47
   9340.74   3223.28
   9922.14   6792.13
   4181.15   2071.50
   2960.38   1370.27
   8418.30   7496.24
    567.58   7879.26
   7643.08    605.42
   5153.71  14512.44
    960.00  10574.24
   6222.81  16729.26
   4558.48  13358.04
   4260.67  11594.23
    912.35  11651.86
    248.84  13359.67
   3605.85  16097.83
    797.92  10302.26
   7778.75   7753.45
   8910.17   2810.47
   6205.93   1796.59
    369.45   2716.70
    992.19  12489.35
   5745.44  13888.30
    900.41  19385.71
   8041.22  14061.43
   4296.98  14797.03
   5944.11  17923.61
10000 20000
-------------------------------
test 8:
10
0 0
10 10
20 20
30 30
40 40
60 60
70 70
80 80
90 90
100 100
100 100
---------------------------

	TESTE OUT
test 1:
   2
   2
   3735.38
   6264.62
-----------------------
test 2:
     3
     3
     11.75
     31.75
      6.50
----------------------
test 3:
     5
     4
     25.00
     25.00
     25.00
     25.00
----------------------
test 4:
7
5
101315461.32
100431140.16
390258184.93
203376983.96
104618229.64
---------------------
test 5:
   8
   20
   5082.62
   4868.36
  10648.78
   2746.03
   4763.17
   4751.07
   3039.43
   2143.75
   3933.71
  11224.94
   9034.84
   2762.72
   3751.85
   5820.20
   7090.31
   2826.43
   7894.28
   1563.00
   3202.68
   2851.84
-----------------------
test 6:
 10
 50
 221151.40
 123658.84
 277537.76
  11528.50
 214624.51
  48525.27
 195342.63
 170416.33
 122201.31
  84781.71
 226469.56
 222492.33
 116536.73
 234314.35
 123668.54
 104906.62
 230466.65
 130280.97
 186666.27
 173048.48
 178948.95
 185496.24
 606496.20
 206285.60
 445489.46
 133195.33
 225451.09
 405153.16
 110758.23
 329405.04
 150851.66
  92769.72
  83176.61
 147881.48
 133559.03
  50000.06
 158145.64
 230066.69
  30793.12
 194677.66
  88775.47
 116930.15
 480932.71
 133064.32
 545086.64
 305749.53
  69925.72
 311577.52
 273017.30
 357720.92
-----------------------
test 7:
 10
 200
 805383.99
1581771.07
 349446.54
 490414.77
1648475.83
 374588.00
1389530.81
2024030.10
1082492.08
 801775.85
 895654.80
 463629.73
 764235.72
 550770.17
1316104.84
1092157.69
 414783.86
 462501.43
 791020.72
1170706.16
 996447.85
1090819.00
 705566.50
1611600.25
1282489.28
 889865.23
 539339.18
 695420.14
 627671.31
 704499.87
 930050.91
 918759.88
 767873.81
 809248.11
 220923.24
1515305.12
1002518.73
 750215.64
 573998.36
1387870.40
 808654.56
 857334.17
 793596.26
 578902.79
1232687.15
 216874.78
 655635.29
2469799.01
1424086.39
 939820.50
 807170.15
 670885.93
1113412.83
1963033.51
1105917.62
2079007.77
 518008.98
 571605.66
1247397.17
 595002.85
 306752.05
 831442.20
1962531.99
1008796.33
1256769.52
 681165.08
 499259.78
1146753.57
 894350.86
1086428.57
1321156.43
1444160.95
 626443.68
 420358.34
 792369.44
 662170.55
 660238.24
 406318.09
 326840.52
 569378.71
1136455.51
 575530.61
 763670.22
 541856.71
 550457.70
 259838.92
2270757.88
1993295.42
 607908.27
 772619.32
 922136.36
1301843.73
 531916.00
 270184.91
1180059.93
 337765.05
2053346.33
 873310.86
 718997.97
1033275.08
1086321.26
1240073.59
1570241.15
2442201.14
1830310.51
 742418.92
1874376.29
 566232.99
 331715.66
1417249.14
 705483.62
 517668.61
1388400.66
1404864.29
1186405.11
 405529.17
 166373.36
 645232.62
1588848.62
 688648.33
 526360.45
 999780.78
 917679.35
 670734.53
1323118.15
1601217.52
1766811.71
 404094.79
2561597.43
 855280.21
1366576.69
1296509.70
1888120.74
1266313.94
 985074.78
 716559.05
 749068.39
 431754.49
1082735.91
1097809.85
 275995.44
1384325.43
 549365.61
 356967.75
 216332.63
 547663.92
 824614.86
1920197.82
1197807.60
 627855.66
1572489.27
1115003.90
 286081.54
 644978.60
 831379.69
2120009.96
 496893.15
1071360.72
 557599.64
 545513.16
 404934.77
2543248.49
1115264.12
1265911.34
1430554.32
 364691.49
 491013.34
 806461.28
 800775.54
 832228.04
1654940.78
2486751.87
 487372.90
 557196.99
 441360.97
1587439.17
1383278.55
 452817.22
1329096.30
2568849.24
1024162.46
 707883.86
 964174.11
1269857.09
1328989.64
1868976.82
1414556.40
 886498.66
 930161.51
1706532.28
1294434.78
 504329.39
1549295.32
 378461.19
 971524.31
 890830.38
1618734.84
1602279.94
1145487.08
 752711.36
-------------------------
test 8:
     5
     10
     50.00
    400.00
    800.00
   1200.00
   2550.00
   2550.00
   1200.00
    800.00
    400.00
     50.00
---------------------------
